import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 诉讼进度控制器 / 诉讼进度控制器添加
 * @param {object} data
 * @param {string} [data.appealCompany] 上诉公司
 * @param {array<附件传输实体>} [data.attachmentList] 附件材料
 * @param {string} [data.contactPhone] 联系电话
 * @param {string} [data.defendantCompany] 被告公司
 * @param {string} [data.fillingDate] 填报日期
 * @param {string} [data.followLawyer] 跟进律师
 * @param {string} [data.followOffice] 跟进律所
 * @param {string} [data.lawsuitName] 官司名称
 * @param {string} [data.lawsuitType] 官司类型
 * @param {number} [data.litigationAmount] 诉讼金额(元)
 * @param {string} [data.litigationCaseNumber] 诉讼案件号
 * @param {array<LawLitigationProgressFile创建传输实体>} [data.progressFileList] 诉讼进度文件集合
 * @param {string} [data.remark] 备注
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<LawLitigationProgress页面展示实体>}
 */
export function lawLitigationProgressAdd(data, config) {
  return post("/lawLitigationProgress/add", data, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器删除
 * @param {object} params
 * @param {string} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<LawLitigationProgress页面展示实体>}
 */
export function lawLitigationProgressDelete(params, config) {
  return get("/lawLitigationProgress/delete", params, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器查询详情
 * @param {object} params
 * @param {string} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<LawLitigationProgress页面展示实体>}
 */
export function lawLitigationProgressDetail(params, config) {
  return get("/lawLitigationProgress/detail", params, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器导出诉讼进度
 * @param {object} data
 * @param {string} [data.lawsuitName] 官司名称
 * @param {string} [data.lawsuitType] 官司类型
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.stage] 官司阶段
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise}
 */
export function lawLitigationProgressExport(data, config) {
  return post("/lawLitigationProgress/export", data, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器分页查询
 * @param {object} data
 * @param {string} [data.lawsuitName] 官司名称
 * @param {string} [data.lawsuitType] 官司类型
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.stage] 官司阶段
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<LawLitigationProgress页面展示实体>>}
 */
export function lawLitigationProgressList(data, config) {
  return post("/lawLitigationProgress/list", data, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器提醒记录详情
 * @param {object} params
 * @param {object} data
 * @param {number} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ProgressReminderPageVO页面展示实体>}
 */
export function lawLitigationProgressReminderDetail(params, data, config) {
  return postWithQueryParams("/lawLitigationProgress/reminder/detail", params, data, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器分页查询
 * @param {object} data
 * @param {number} [data.businessId] 业务ID
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.reminderMatter] 提醒事项
 * @param {string} [data.reminderUser] 提醒人
 * @param {array<string>} [data.reminderUserId] 提醒人参数集合
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<ProgressReminderPageVO页面展示实体>>}
 */
export function lawLitigationProgressReminderList(data, config) {
  return post("/lawLitigationProgress/reminder/list", data, config);
}

/**
 * 诉讼进度控制器 / 诉讼进度控制器更新
 * @param {object} data
 * @param {string} [data.appealCompany] 上诉公司
 * @param {array<附件传输实体>} [data.attachmentList] 附件材料
 * @param {string} [data.contactPhone] 联系电话
 * @param {string} [data.defendantCompany] 被告公司
 * @param {string} [data.fillingDate] 填报日期
 * @param {string} [data.followLawyer] 跟进律师
 * @param {string} [data.followOffice] 跟进律所
 * @param {number} [data.id] 表ID
 * @param {string} [data.lawsuitName] 官司名称
 * @param {string} [data.lawsuitType] 官司类型
 * @param {number} [data.litigationAmount] 诉讼金额(元)
 * @param {string} [data.litigationCaseNumber] 诉讼案件号
 * @param {array<LawLitigationProgressFile创建传输实体>} [data.progressFileList] 诉讼进度文件集合
 * @param {string} [data.remark] 备注
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<LawLitigationProgress页面展示实体>}
 */
export function lawLitigationProgressUpdate(data, config) {
  return post("/lawLitigationProgress/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} 附件传输实体 附件传输实体
 * @property {string} attUrl 附件url
 * @property {number} directoryId 目录id
 * @property {number} id 附件id
 * @property {string} originalName 原始文件名
 * @description 附件传输实体
 */

/**
 * @typedef {object} LawLitigationProgress页面展示实体 页面展示实体
 * @property {string} contactPhone 联系电话
 * @property {string} createUser
 * @property {string} followLawyer 跟进律师
 * @property {string} followOffice 跟进律所
 * @property {number} id id
 * @property {string} lawsuitName 官司名称
 * @property {string} lawsuitType 官司类型
 * @property {number} litigationAmount 诉讼金额(元)
 * @property {string} litigationCaseNumber 诉讼案件号
 * @property {string} stage 官司阶段
 * @description 页面展示实体
 */

/**
 * @typedef {object} LawLitigationProgressFile创建传输实体 创建传输实体
 * @property {string} fileName 文件名称
 * @property {array<附件传输实体>} innerAttachmentList 附件材料
 * @property {string} stage 阶段
 * @property {string} uploadDate 上传时间
 * @property {string} uploadUser 上传人
 * @description 创建传输实体
 */

/**
 * @typedef {object} ProgressReminderPageVO页面展示实体 页面展示实体
 * @property {number} businessId 诉讼进度id
 * @property {string} createUser 编制人
 * @property {string} createUserName 创建人登录账号
 * @property {number} id 提醒id
 * @property {string} lawsuitName 官司名称
 * @property {string} reminderContent 提醒内容
 * @property {number} reminderDateType 提醒日期类型(1 当前 2 之前 3 之后)
 * @property {number} reminderDay 提醒天数
 * @property {string} reminderMatter 提醒事项
 * @property {string} reminderTime 提醒时间
 * @property {string} reminderTimeStr 提醒时间格式化
 * @property {string} reminderUser 提醒人
 * @property {array<number>} reminderUserList 提醒人ID集合
 * @description 页面展示实体
 */
